1. Field of the Invention
The present invention relates to the field of Web services and, more particularly, to exposing logic flows of Web services and permitting logic flow modifications.
2. Description of the Related Art
Web services represent reusable software building blocks that are Uniform Resource Locator (URL) accessible. Web services typically expose their capabilities to client applications and not their implementations. This allows Web services to be implemented in any computing language and on any platform and still be compatible with all client applications. Thus, internal details of Web services are abstracted from client applications causing each Web service to function as a black box having unknown internal logic. In theory, service providers can upgrade provided Web services and change the internal logic without affecting client applications that use the Web services.
Client applications, however, can sometimes care greatly about specific implementation details pertaining to Web services. As a result, a potential Web service customer can discover a Web service, which almost satisfies the customer's needs. This customer may desire some assurance relating to the implementation details for the discovered service, which is unavailable due to abstraction principles. The customer may also desire to slightly modify a non-exposed process of the Web service. Neither of these operations is possible using conventional technologies.
For example, a client application can use a Web service that determines credit ratings, which requires a social security number and returns a credit score between three hundred and eight hundred. The specification for the Web service may abstract implementation details of how the credit rating was obtained. It may be based upon a single credit score obtained directly form any of the three major credit bureaus (EXPERIAN, EQUIFAX, and TRANSUNION). It could also be based upon an algorithm that averages two or three of these ratings to determine an averaged credit score. The underlying logic can be extremely important, since different companies (which are potential customers of the Web service) can have company specific rules as to how a credit score is to be calculated.
Using current technologies, a potential customer can choose to utilize a Web service, such as a credit rating Web service, without knowing details of the Web service. Possibly more problematic, the customer can initially seek and use a Web service having desired internal logic, which is abstracted for the Web service and is therefore not guaranteed. Later, after a client application has been using the Web service, internal logic of the Web service being utilized can unexpectedly change unbeknownst to the customer as a result of a Web service upgrade. Consequently, the client application supporting a customer can utilize logic for business decisions that is no longer compliant with business guidelines established by the customer.
To avoid the above problems, customers often create customized versions of Web services, which are similar to a more commercial one, yet which is adapted to a customer's specific needs and/or which the customer can control. Many potential advantages of Web services, such as widespread reuse, efficiencies of scale, and the like are not achieved in practice due to the above problems.
Today, few high-level Web services (which can be incrementally built using multiple component Web services) or application-level Web services are in widespread use due to an inability of potential customers to tailor these services for customer specific situations. Instead, Web services are most commonly used for discrete, low-level functions. For Web services to realize their potential as a general-purpose distributed software technology for creating and joining different remotely located software building blocks, new techniques and technologies are needed.